package br.com.sadim.hospital;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import br.com.sadim.dao.ConsultaDAO;
import br.com.sadim.util.DAOFactory;

public class ConsultaRN {

	private ConsultaDAO consultaDAO;
	
	public ConsultaRN() {
		consultaDAO = DAOFactory.criarConsultaDAO();
	}
	
	public Consulta getById(Integer idConsulta) {
		return consultaDAO.getById(idConsulta);
	}
	
	public void salvar(Consulta user) {
		Integer idUsuario = user.getIdConsulta();
		if(idUsuario == null || idUsuario == 0) {
			consultaDAO.save(user);
		} else {
			consultaDAO.update(user);
		}
	}
	
	public void delete(Consulta user) {
		consultaDAO.delete(user);
	}
	
	public List<Consulta> getList() {
		return consultaDAO.getList();
	}
	
	public List<Consulta> getListAgenda() {
		return consultaDAO.getListAgenda();
	}
	
	public List<Consulta> getByMedico(Integer medicoId) {
		return consultaDAO.getListByMedico(medicoId);
	}
	
	public List<Consulta> getListRealizadas(Integer medicoId) {
		return consultaDAO.getListRealizadasByMedico(medicoId);
	}
	
	public List<Consulta> getListConsultasRealizadas() {
		return consultaDAO.getListRealizadas();
	}
	
	public int getNumConsultasRealizadasByMonth(Date data, Usuario medico) {
		if(medico != null)
			return consultaDAO.getNumConsultasRealizadasByMonth(data, medico.getIdUsuario());
		return consultaDAO.getNumConsultasRealizadasByMonth(data, null);
	}
	
	
	public Double getMediaTempoEsperaByMonth(Date data, Usuario medico) {
		if(medico != null)
			return consultaDAO.getMediaTempoEsperaByMonth(data, medico.getIdUsuario());
		return consultaDAO.getMediaTempoEsperaByMonth(data, null);
	}
	
	public Double getMediaTempoAtendimentoByMonth(Date data, Usuario medico) {
		if(medico != null)
			return consultaDAO.getMediaTempoAtendimentoByMonth(data, medico.getIdUsuario());
		return consultaDAO.getMediaTempoAtendimentoByMonth(data, null);
	}
	
	public List<String> getDoencasDiagnosticadasByMonth(Date data) {
		return consultaDAO.getDoencasDiagnosticadasByMonth(data);
	}
	
	public List<DiagnosticoConsulta> getQtdDoencasDiagnosticadasByMonth(Integer doencaId) {
		
		return consultaDAO.getQtdDoencasDiagnosticadasByMonth(doencaId);
	}
	
	public List<Consulta> getByMedicoAndDate(Integer medicoId, Date diaDasConsultas) {
		return consultaDAO.getListByMedicoAndDate(medicoId, diaDasConsultas);
	}
	
}
